from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np


# 写中文
def putTxt(img, txt, x, y):
    # img = cv2.imread('/Users/mc/Desktop/TF/武林外传/dapeng/1254.jpg')  # 名称不能有汉字
    cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # cv2和PIL中颜色的hex码的储存顺序不同
    pilimg = Image.fromarray(cv2img)

    # PIL图片上打印汉字
    draw = ImageDraw.Draw(pilimg)  # 图片上打印
    font = ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf", 20, encoding="utf-8")  # 参数1：字体文件路径，参数2：字体大小
    draw.text((x, y), txt, (255, 101, 101), font=font)  # 参数1：打印坐标，参数2：文本，参数3：字体颜色，参数4：字体

    # PIL图片转cv2 图片
    cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
    return cv2charimg


# 测试打印中文的效果
def test():
    img = cv2.imread('/Users/mc/Desktop/TF/屌丝男士/大鹏/1254.jpg')  # 名称不能有汉字
    cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # cv2和PIL中颜色的hex码的储存顺序不同
    pilimg = Image.fromarray(cv2img)

    # PIL图片上打印汉字
    draw = ImageDraw.Draw(pilimg)  # 图片上打印
    font = ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf", 20, encoding="utf-8")  # 参数1：字体文件路径，参数2：字体大小
    draw.text((0, 0), "大鹏", (255, 101, 101), font=font)  # 参数1：打印坐标，参数2：文本，参数3：字体颜色，参数4：字体

    # PIL图片转cv2 图片
    cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
    cv2.imshow("图片", cv2charimg)  # 汉字窗口标题显示乱码
    cv2.waitKey(0)
    cv2.destroyAllWindows()
# test()
